# ========== 构建阶段 ==========
FROM golang:1.24-alpine AS builder

# 设置工作目录为项目根目录
WORKDIR /app

# 复制整个项目到容器中
COPY . .

# 设置模块代理（国内加速）
ENV GOPROXY=https://goproxy.cn,direct

# 下载依赖（使用缓存优化）
RUN go mod download

# 构建二进制文件（注意指定正确的构建路径）
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -o /app/bookstore ./cmd/bookstore

# ========== 运行阶段 ==========
FROM alpine:3.18

# 安装CA证书（用于HTTPS请求）
RUN apk --no-cache add ca-certificates

# 设置工作目录
WORKDIR /app

# 从构建阶段复制文件
COPY --from=builder /app/bookstore ./
COPY --from=builder /app/static ./static

# 安全增强：使用非root用户运行
RUN addgroup -S appgroup && adduser -S appuser -G appgroup && \
    chown -R appuser:appgroup /app
USER appuser

# 暴露端口（根据实际修改）
EXPOSE 8080

# 启动应用
CMD ["./bookstore"]